package com.yizhiliulianta.usercenter.utils;

import lombok.SneakyThrows;

import java.nio.ByteBuffer;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.UUID;

public class UserIdGeneratorUtils {

    @SneakyThrows
    public static String getDurianCode() {
        long number = uuidToNumber(UUID.randomUUID().toString());
        return String.valueOf(number);
    }
    public static int uuidToNumber(String uuidString) {
        try {
            // 使用 SHA-256 算法创建 MessageDigest 实例
            MessageDigest digest = MessageDigest.getInstance("SHA-256");

            // 将 UUID 字符串转换为字节数组
            byte[] uuidBytes = uuidString.getBytes();

            // 更新哈希内容为 UUID 字符串的字节数组
            digest.update(uuidBytes);

            // 计算哈希值
            byte[] hashedBytes = digest.digest();

            // 将哈希值转换为 long 型数字
            long number = ByteBuffer.wrap(hashedBytes).getLong();

            // 取哈希值的绝对值
            number = Math.abs(number);

            // 将数字控制在5位数以内
            int result = (int) (number % 100000);

            // 返回生成的数字
            return result;
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return -1; // 如果算法不可用，返回默认值
        }
    }

}
